# 1、dp[i]:n为i情况下有多少种二叉搜索树
# 2、递推公式：n为3的二叉搜索树个数 = 根为1的树个数 + 根为2的树个数 + 根为3的树个数
# 根为1的树个数 = 左子树0个节点的树个数 * 右子树2个节点的树个数
# 根为2的树个数 = 左子树1个节点的树个数 * 右子树1个节点的树个数
# 根为3的树个数 = 左子树2个节点的树个数 * 右子树0个节点的树个数
# dp[i] += dp[j-1] * dp[i-j] j=1~i（j表示根节点值）
# 3、初始化dp数组：dp[0] = 1
# 4、遍历顺序：从左到右
# 5、打印dp数组
n = int(input())
dp = [0] * (n+1)
dp[0] = 1
for i in range(1, n+1):
    for j in range(1, i+1):
        dp[i] += dp[j-1] * dp[i-j]

for i in dp:
    print(i, end=" ")